﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DDMedlem.Buisness;
namespace DDMedlem
{
    public partial class RegistrerMedlem : System.Web.UI.Page
    {

       
        protected void Page_Load(object sender, EventArgs e)
        {
            
           
            if (!IsPostBack && Session["username"] != null)
            {
                
                KH_Type_dropDownList.DataSource = StaticMaterial.KirkeligHandling;
                KH_Type_dropDownList.DataBind();
                mdlType_dropdownList.DataSource = StaticMaterial.MedlemsType;
                mdlType_dropdownList.DataBind();

                Test.StartTest();

                List<String> Menigheder = new List<string>();

                for(int i = 0; i < Test.Menigheder.Count; i++)
                {
                    Menigheder.Add(((Menighed)Test.Menigheder[i]).navn);
                }

                KH_STED_DropDown.DataSource = Menigheder;
                KH_STED_DropDown.DataBind();


                dead_Button.Attributes.Add("onclick", "alert('Personen er nu markeret som værende død')");
                transfer_Button.Attributes.Add("onclick", "alert('Personen er nu overflyttet til en tilfældig menighed')");
                udmeld_Button.Attributes.Add("onclick", "alert('Personen er nu markeret som udmeldt')");
                Button1.Attributes.Add("onclick", "alert('Vi simulerer at systemet gemmer personen')");
                

                if (((DDMController)Session["instance"]).Current_Person == null)
                {
                    ((DDMController)Session["instance"]).Current_Person = new Person();
                }
                updateKH_oversigt();
                BindPersonData();
            }
        }
        protected void Page_UnLoad(object sender, EventArgs e)
        {
            if(Session["username"] != null)
                ((DDMController)Session["instance"]).Current_Person = new Person();
        }
        protected void civilstatus_dropdown_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (civilstatus_dropdown.SelectedIndex > 0)
                spouse_row.Visible = true;
            else
                spouse_row.Visible = false;
        }



        protected void KH_GEM_Button_Click(object sender, EventArgs e)
        {
            KirkeligHandling k = new KirkeligHandling(KH_altSted_txtbox.Text, ((DDMController)Session["instance"]).Current_Menighed, DateTime.Parse(KH_dato_textbox.Text), KH_præst_txtbox.Text, KH_comments_txtbox.Text, KH_Type_dropDownList.SelectedItem.Text);
            ((DDMController)Session["instance"]).Current_Person.Tilføj_handling(k);
            updateKH_oversigt();
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            

            try
            {
                DDMController co = ((DDMController)Session["instance"]);

               co.Current_Person.fornavn = fornavn_txtBox.Text;
               co.Current_Person.efternavn = efternavn_txtbox.Text;
               co.Current_Person.adresse = adresse_txtbox.Text;
               co.Current_Person.postnr = Convert.ToInt32(postnr_txtbox.Text);
               co.Current_Person.by =  bynavn_label.Text;
               co.Current_Person.stilling = stilling_txtbox.Text;
               co.Current_Person.tlf =  tlf_txtbox.Text;
               co.Current_Person.mob = mobil_txtbox.Text;
               co.Current_Person.mgh_barn = mghBarn_chkBox.Checked;
               co.Current_Person.f_sogn = BirthPerish_txtbox.Text;
               co.Current_Person.f_kommune = birthKomm_txtbox.Text;
               co.Current_Person.f_dato = DateTime.Parse(birthday_txtbox.Text);
               co.Current_Person.f_navn =  birthCity_txtbox.Text;
               co.Current_Person.email = email_txtbox.Text;

                MedlemsInfo m = new MedlemsInfo();
                m.MedlemsDatoFra = DateTime.Parse(medlemDato_txtbox.Text);
                m.MedlemsType = mdlType_dropdownList.SelectedItem.Text;
               co.Current_Person.MedlemsHistorik.Add(m);

               Funktion f = new Funktion();
               f.Beskrivelse = Funktion_dropdownList.SelectedItem.Text;
               co.Current_Person.FunktionsHistorik.Add(f);
               co.Current_Person.MedtagINN = Medtag_NN_ChkBox.Checked;

               foreach (ListItem li in abbonerer_chckListBox.Items)
               {
                   if(li.Selected)
                   {
                   Blad b = new Blad();
                   b.Besk = li.Text; 
                   co.Current_Person.abb_blade.Add(b);
                   }

               }

               /*
                * CIVIL STATUS
                * 
                */
               co.Current_Person.civilstatus = civilstatus_dropdown.SelectedItem.Text;
              
                //TODO: Skal gemmes i samlever property ved valg af samlever + det samme med børn
               //co.Current_Person.samlever.fornavn + " " + co.Current_Person.samlever.efternavn;
               //foreach (Person p in co.Current_Person.Børn)
               //{
               //    children_listbox.Items.Add(p.fornavn + " " + p.efternavn);
               //}
               if (co.Current_Person.uid > 0)
               {
                   Test.Personer[co.Current_Person.uid] = co.Current_Person;
               }
               else
               {
                   co.GemPerson();
               }
               Status_Label.Text = "Medlem blev gemt i databasen";
               Status_Label.ForeColor = System.Drawing.ColorTranslator.FromHtml("Red");

                
                Response.Redirect("default.aspx");
            }
            catch (Exception ex)
            {
                Response.Write("<script>alert('Der skete en fejl under skrivning af data, et eller flere felter var udfyldt forkert, dette skal selvfølgelig rettes til en noget mere brugervenlig validering af input... men fejlen er: "+ex.Message+"')</script>");
            }
            
        }

        protected void updateKH_oversigt()
        {
            if (((DDMController)Session["instance"]).Current_Person.kirkelige_handlinger != null)
            {
                DDMController co = ((DDMController)Session["instance"]);
                var q = from kh in co.Current_Person.kirkelige_handlinger select new { Handling = kh.type, Dato = kh.Dato.ToShortDateString(), Præst = kh.Præst };

                KH_oversigt_gridView.DataSource = q.ToList();

                KH_oversigt_gridView.DataBind();
            }
        }

        protected void kh_oversigt_selectedIndexChanged(object sender, EventArgs e)
        {
            DDMController co = ((DDMController)Session["instance"]);
            KirkeligHandling k = co.Current_Person.kirkelige_handlinger[((GridView)sender).SelectedIndex];

            KH_præst_label.Text = k.Præst;
            KH_sted_label.Text = k.AltSted;
            KH_dato_label.Text = k.Dato.ToShortDateString();
            KH_comments_label.Text = k.Bemærkning;
            KH_Handling_label.Text = k.type;

           // KH_INFO_PANEL.Visible = true;
        }

        protected void BindPersonData()
        {
            DDMController co = ((DDMController)Session["instance"]);

            fornavn_txtBox.Text = co.Current_Person.fornavn;
            efternavn_txtbox.Text = co.Current_Person.efternavn;
            adresse_txtbox.Text = co.Current_Person.adresse;
            postnr_txtbox.Text = co.Current_Person.postnr.ToString();
            bynavn_label.Text = co.Current_Person.by;
            stilling_txtbox.Text = co.Current_Person.stilling;
            tlf_txtbox.Text = co.Current_Person.tlf;
            mobil_txtbox.Text = co.Current_Person.mob;
            mghBarn_chkBox.Checked = co.Current_Person.mgh_barn;
            BirthPerish_txtbox.Text = co.Current_Person.f_sogn;
            birthKomm_txtbox.Text = co.Current_Person.f_kommune;
            birthday_txtbox.Text = co.Current_Person.f_dato.ToShortDateString();
            birthCity_txtbox.Text = co.Current_Person.f_navn;
            email_txtbox.Text = co.Current_Person.email;

            if (co.Current_Person.MedlemsHistorik.Count != 0)
            {
                medlemDato_txtbox.Text = co.Current_Person.MedlemsHistorik[0].MedlemsDatoFra.ToShortDateString();
                mdlType_dropdownList.SelectedValue = co.Current_Person.MedlemsHistorik[0].MedlemsType;
                Funktion_dropdownList.SelectedValue = co.Current_Person.FunktionsHistorik[0].Beskrivelse;
                Medtag_NN_ChkBox.Checked = co.Current_Person.MedtagINN;

                foreach (ListItem li in abbonerer_chckListBox.Items)
                {
                    foreach (Blad b in co.Current_Person.abb_blade)
                    {
                        if (b.Besk == li.Text)
                            li.Selected = true;
                    }

                }

                /*
                 * CIVIL STATUS
                 * 
                 */
                civilstatus_dropdown.SelectedItem.Text = co.Current_Person.civilstatus;
                if (civilstatus_dropdown.SelectedIndex > 0)
                    spouse_row.Visible = true;
                spouse_label.Text = co.Current_Person.samlever.fornavn + " " + co.Current_Person.samlever.efternavn;
                foreach (Person p in co.Current_Person.Børn)
                {
                    children_listbox.Items.Add(p.fornavn + " " + p.efternavn);
                }



            }
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            DDMController co = ((DDMController)Session["instance"]);
            co.Current_Person = new Person();
            Response.Redirect("Default.aspx");
        }
    }
}